function fnTrap (array) {
    let left = 0, right = array.length - 1; // 左右指针
    let leftMax = 0, rightMax = 0; // 左右最大数
    let water = 0; // 最大接水量
    // 双指针：
    // 我们使用两个指针（left 和 right），分别从数组的两端开始，向中间移动。
    // 比较左右高度，选择较低的一侧进行分析。
    // 记录最大高度：
    // leftMax 和 rightMax 分别记录左侧和右侧已遍历的最大高度。
    // 如果当前高度低于 leftMax 或 rightMax，说明当前位置可以存水。
    // 计算雨水量：
    // 雨水量等于 maxHeight - 当前高度，累加到 water。
    while(left <= right){
        if (array[left] < array[right]) {
            if (array[left] >= leftMax) {
                leftMax = array[left]
            } else {
                water += leftMax - array[left]
            }
            left++;
        } else {
            if (array[right] >= rightMax) {
                rightMax = array[right]
            } else {
                water += rightMax - array[right]
            }
            right--;
        }
    }
    return water
}


console.log(fnTrap([0,1,0,2,1,0,1,3,2,1,2,1]))